(PHP 4, PHP 5)
sprintf — Devuelve una cadena con formato
Devuelve una cadena producida de acuerdo con la cadena de formato formato .
La cadena de formato se compone de cero o más directivas: caracteres ordinarios (excluyendo %) que son copiados directamente en el resultado, y unas especificaciones de conversión, cada una de las cuales produce una búsqueda por su propio parámetro. Esto se aplica tanto en sprintf() como en printf().
Cada especificación de conversión consiste de un signo de porcentaje (%), seguido por uno o más de los siguientes elementos, en orden:
Un indicador de tipo que especifica el tipo bajo el que deben tratarse los datos del argumento. Los posibles tipos son:
La cadena de formato soporta la numeración/intercambio de argumentos. He aquí un ejemplo:
Example #1 Intercambio de argumentos
<?php
$formato = 'Hay %d monos en el %s';
printf($formato, $num, $ubicacion);
?>
Esto podría imprimir, "Hay 5 monos en el árbol". Pero imagine que creamos una cadena de formato en un archivo separado, generalmente por que queremos implementar un mecanismo de internacionalización, y re-escribimos el código:
Example #2 Intercambio de argumentos
<?php
$formato = 'El %s contiene %d monos';
printf($formato, $num, $ubicacion);
?>
Ahora tenemos un problema. El orden de los recipientes en la cadena de formato no coincide con el orden de los argumentos en el código. Quisiéramos dejar el código tal como está, y simplemente indicar en la cadena de formato cuáles argumentos están siendo referidos por los recipientes. Entonces re-escribiríamos la cadena de formato de esta forma:
Example #3 Intercambio de argumentos
<?php
$formato = 'El %2$s contiene %1$d monos';
printf($formato, $num, $ubicacion);
?>
Un beneficio adicional de esto es que puede repetir los recipientes sin agregar más argumentos en el código. Por ejemplo:
Example #4 Intercambio de argumentos
<?php
$formato = 'El %2$s contiene %1$d monos.
Se trata de un bonito %2$s lleno con %1$d monos.';
printf($formato, $num, $ubicacion);
?>
Devuelve una cadena producida de acuerdo a la cadena de formato formato .
| Versión | Descripción |
|---|---|
| 4.0.6 | Se agregó el soporte para el intercambio y la numeración de argumentos |
Example #5 printf(): ejemplos varios
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // el valor ASCII 65 es 'A'
// note el doble %%, esto imprime un caracter '%' literal
printf("%%b = '%b'\n", $n); // representación binaria
printf("%%c = '%c'\n", $c); // imprime el caracter ascii, igual que la función chr()
printf("%%d = '%d'\n", $n); // representación de entero estándar
printf("%%e = '%e'\n", $n); // notación científica
printf("%%u = '%u'\n", $n); // representación entera sin signo de un entero positivo
printf("%%u = '%u'\n", $u); // representación entera sin signo de un entero negativo
printf("%%f = '%f'\n", $n); // representación en punto flotante
printf("%%o = '%o'\n", $n); // representación octal
printf("%%s = '%s'\n", $n); // representación de cadena
printf("%%x = '%x'\n", $n); // representación hexadecimal (minúsculas)
printf("%%X = '%X'\n", $n); // representación hexadecimal (mayúsculas)
printf("%%+d = '%+d'\n", $n); // indicador de signo en un entero positivo
printf("%%+d = '%+d'\n", $u); // indicador de signo en un entero negativo
?>
El resultado del ejemplo seria:
%b = '10100111101010011010101101' %c = 'A' %d = '43951789' %e = '4.39518e+7' %u = '43951789' %u = '4251015507' %f = '43951789.000000' %o = '247523255' %s = '43951789' %x = '29ea6ad' %X = '29EA6AD' %+d = '+43951789' %+d = '-43951789'
Example #6 printf(): indicadores de cadena
<?php
$s = 'mono';
$t = 'varios monos';
printf("[%s]\n", $s); // salida de cadena estándar
printf("[%10s]\n", $s); // alineación a derecha con espacios
printf("[%-10s]\n", $s); // alineación a izquierda con espacios
printf("[%010s]\n", $s); // el relleno con ceros funciona con cadenas también
printf("[%'#10s]\n", $s); // usar el caracter de relleno '#'
printf("[%10.10s]\n", $t); // alineación a izquierda pero con un corte de 10 caracteres
?>
El resultado del ejemplo seria:
[mono] [ mono] [mono ] [000000mono] [######mono] [varios mon]
Example #7 sprintf(): enteros con relleno de ceros
<?php
$fecha_iso = sprintf("%04d-%02d-%02d", $anyo, $mes, $dia);
?>
Example #8 sprintf(): formato de valores monetarios
<?php
$dinero1 = 68.75;
$dinero2 = 54.35;
$dinero = $dinero1 + $dinero2;
// echo $dinero imprimiría "123.1";
$con_formato = sprintf("%01.2f", $dinero);
// echo $con_formato imprime "123.10"
?>
Example #9 sprintf(): notación científica
<?php
$numero = 362525200;
echo sprintf("%.3e", $numero); // imprime 3.625e+8
?>